using System;
using System.Collections.Generic;
using System.Text;
using Csla;
using System.Data;
using Ent.AccesoDatos;

namespace Ent.Inscripcion.Core
{
    [Serializable]
    public class Autenticacion : CommandBase<Autenticacion>
    {
        string _Usuario;
        string _Clave;
        public Usuario DatosUsuario;

        #region Factory Methods

        public static Autenticacion Execute(string Usuario, string Clave)
        {
            
            Autenticacion cmd = new Autenticacion(Usuario,Clave);
            cmd.BeforeServer();
            cmd = DataPortal.Execute<Autenticacion>(cmd);
            cmd.AfterServer();
            return cmd;
        }

        public Autenticacion(string Usuario, string Clave)
        {
            _Usuario = Usuario;
            _Clave = Clave;
        }

        #endregion

        #region Client-side Code

        // TODO: add your own fields and properties
        bool _result;

        public bool Result
        {
            get { return _result; }
        }

        private void BeforeServer()
        {
            // TODO: implement code to run on client
            // before server is called
        }

        private void AfterServer()
        {
            // TODO: implement code to run on client
            // after server is called
        }

        #endregion

        #region Server-side Code

        protected override void DataPortal_Execute()
        {
            try
            {
                var accesoDatos = new DriveDataBase(TypeDataBase.Mysql);
                List<Parametro> parametros = new List<Parametro>();
                parametros.Add(new Parametro("Login", _Usuario));
                parametros.Add(new Parametro("Password", _Clave));
                var datos = accesoDatos.EjecutarScalar("AutenticarUsuario", parametros);
                int numeroUsuario;
                int.TryParse(datos.ToString(), out numeroUsuario);
                if (numeroUsuario == 0)
                    _result = false;
                else
                {
                    _result = true;
                    DatosUsuario = Usuario.GetUsuario(_Usuario);
                }
            }
            catch (Exception)
            {

                throw;
            }
            
        }

        #endregion
    }
}
